package ufc.quixada.petti.service;

import java.util.List;

import ufc.quixada.petti.dao.OrganizadorDAO;
import ufc.quixada.petti.infra.SimplesEntityManager;
import ufc.quixada.petti.model.Organizador;



public class OrganizadorService {
	private OrganizadorDAO dao;

	private SimplesEntityManager simpleEntityManager;

	public OrganizadorService() {

	}

	public OrganizadorService(SimplesEntityManager simpleEntityManager) {
		this.simpleEntityManager = simpleEntityManager;
		dao = new OrganizadorDAO(simpleEntityManager.getEntityManager());
	}

	public void save(Organizador organizador) {

		try {
			simpleEntityManager.beginTransaction();
			dao.save(organizador);
			simpleEntityManager.commit();
		} catch (Exception e) {
			e.printStackTrace();
			simpleEntityManager.rollBack();
		}

	}

	public List<Organizador> findAll() {
		return dao.findAll();
	}

	public void atualizar(Organizador organizador) {

		try {
			simpleEntityManager.beginTransaction();
			dao.update(organizador);
			simpleEntityManager.commit();
		} catch (Exception e) {
			e.printStackTrace();
			simpleEntityManager.rollBack();
		} finally {
			simpleEntityManager.close();
		}
	}

	public void remover(Organizador organizador) {
		try {
			simpleEntityManager.beginTransaction();
			dao.delete(organizador);
			simpleEntityManager.commit();
		} catch (Exception e) {
			e.printStackTrace();
			simpleEntityManager.rollBack();
		} finally {
			simpleEntityManager.close();
		}
	}

	public Organizador encontrarPorId(Long id) {
		Organizador organizador = null;
		try {
			simpleEntityManager.beginTransaction();
			organizador = dao.getById(id);
			simpleEntityManager.commit();
		} catch (Exception e) {
			e.printStackTrace();
			simpleEntityManager.rollBack();
		} finally {
			simpleEntityManager.close();
		}
		return organizador;
	}

	public Organizador removerPorId(Long id) {
		Organizador organizador = null;
		try {
			simpleEntityManager.beginTransaction();
			organizador = dao.getById(id);
			dao.delete(organizador);
			simpleEntityManager.commit();
		} catch (Exception e) {
			e.printStackTrace();
			simpleEntityManager.rollBack();
		} finally {
			simpleEntityManager.close();
		}
		return organizador;
	}

	public Organizador encontrarPorNome(String nome) {
		Organizador organizador = null;
		try {
			simpleEntityManager.beginTransaction();
			organizador = dao.getByName(nome);
			simpleEntityManager.commit();
		} catch (Exception e) {
			e.printStackTrace();
			simpleEntityManager.rollBack();
		} finally {
			simpleEntityManager.close();
		}
		return organizador;
	}

}
